home *** CD-ROM | disk | FTP | other *** search
/ Chip 2005 May / CMCD0505.ISO / Software / Shareware / Utilitare / 010editor / 010ed20.exe / {app} / Scripts / IsASCII.1sc next >
Text File  |  2004-10-25  |  1KB  |  57 lines

  1. //-----------------------------------
  2. //--- 010 Editor v1.0 Script File
  3. //
  4. // File:     IsASCII.1sc
  5. // Author:   SweetScape Software
  6. // Revision: 2.0
  7. // Purpose:  Identifies if any bytes
  8. //    in the file are greater than
  9. //    127.
  10. //-----------------------------------
  11.  
  12. // Define variables
  13. const int BLOCK_SIZE = 1024;
  14. uchar buffer[ BLOCK_SIZE ];
  15. quad  size, pos;
  16. int   i, bufsize;
  17.  
  18. // Check that a file is open
  19. if( FileCount() == 0 )
  20. {
  21.     MessageBox( idOk, "IsASCII", "IsASCII can only be executed when a file is loaded." );
  22.     return -1;
  23. }
  24.  
  25. // Read file as a set of blocks
  26. //  - more efficient this way
  27. pos  = 0;
  28. size = FileSize();
  29. while( size > 0 )
  30. {
  31.     // Read set of bytes from the file
  32.     bufsize = size < BLOCK_SIZE ? size : BLOCK_SIZE;
  33.     ReadBytes( buffer, pos, bufsize );
  34.  
  35.     // Check all bytes for ASCII value
  36.     for( i = 0; i < bufsize; i++ )
  37.     {
  38.         if( buffer[i] >= 128 )
  39.         {
  40.             pos += (quad)i;
  41.             MessageBox( idOk, "IsASCII", 
  42.                "Non-ASCII character found at address %Ld [%LXh]", pos, pos );
  43.             SetCursorPos( pos );
  44.             return 0;
  45.         }
  46.     }        
  47.  
  48.     // Advance to next block
  49.     pos  += bufsize;
  50.     size -= bufsize;
  51. }
  52.  
  53. // Only ASCII characters found
  54. MessageBox( idOk, "IsASCII",
  55.     "File contains only ASCII characters." );
  56. return 1;
  57.